//auto gen by paipai.java.augogen ver 3.0.0
//author skyzhuang
//source idl: com.erp.acaccount.ao.idl.GetBankAccountByFilterReq.java


#ifndef ERP_ACACCOUNT_PO_CBANKACCOUNTFILTERPO_BY_AUTOGEN_V5_H
#define ERP_ACACCOUNT_PO_CBANKACCOUNTFILTERPO_BY_AUTOGEN_V5_H


#include "app_platform/intf_serializable.h"
#include <set>
#include <bitset>
#include <map>
#include <string>
#include <sstream>
#include <iostream>


namespace erp
{
namespace acaccount
{
namespace po
{


class CBankAccountFilterPo : public ISerializable
{
	public:
		std::string m_sLastErrMsg;///<错误信息

		/**
		 *  版本号   
		 *
		 * 版本 >= 0
		 */
		uint32_t dwVersion;

		/**
		 * cVersion_u uflag field
		 */
		uint8_t cVersion_u; //optional flag

		/**
		 *  页码，从0开始 
		 *
		 * 版本 >= 0
		 */
		uint32_t dwPage;

		/**
		 * cPage_u uflag field
		 */
		uint8_t cPage_u; //optional flag

		/**
		 *  页面大小 
		 *
		 * 版本 >= 0
		 */
		uint32_t dwPageSize;

		/**
		 * cPageSize_u uflag field
		 */
		uint8_t cPageSize_u; //optional flag

		/**
		 *  排序方式 
		 *
		 * 版本 >= 0
		 */
		uint16_t wOrderType;

		/**
		 * cOrderType_u uflag field
		 */
		uint8_t cOrderType_u; //optional flag

		/**
		 * sysNo列表
		 *
		 * 版本 >= 0
		 */
		std::set<uint64_t>  setSysNoList;

		/**
		 * cSysNoList_u uflag field
		 */
		uint8_t cSysNoList_u; //optional flag

		/**
		 *  上级银行SysNo 
		 *
		 * 版本 >= 0
		 */
		uint64_t ddwParentBankAccountSysNo;

		/**
		 * cParentBankAccountSysNo_u uflag field
		 */
		uint8_t cParentBankAccountSysNo_u; //optional flag

		/**
		 *  银行账号 
		 *
		 * 版本 >= 0
		 */
		std::string strBankAccount;

		/**
		 * cBankAccount_u uflag field
		 */
		uint8_t cBankAccount_u; //optional flag

		/**
		 *  账户名称 
		 *
		 * 版本 >= 0
		 */
		std::string strBankAccountName;

		/**
		 * cBankAccountName_u uflag field
		 */
		uint8_t cBankAccountName_u; //optional flag

		/**
		 *  开户行 
		 *
		 * 版本 >= 0
		 */
		std::string strBranchBank;

		/**
		 * cBranchBank_u uflag field
		 */
		uint8_t cBranchBank_u; //optional flag

		/**
		 *  银行类型 
		 *
		 * 版本 >= 0
		 */
		std::string strBankType;

		/**
		 * cBankType_u uflag field
		 */
		uint8_t cBankType_u; //optional flag

		/**
		 * 包含属性，且或关系由PropertyOption指定
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetPropertyInclude;

		/**
		 * cPropertyInclude_u uflag field
		 */
		uint8_t cPropertyInclude_u; //optional flag

		/**
		 * 包含属性选项：0：且的关系；1，或的关系
		 *
		 * 版本 >= 0
		 */
		uint16_t wPropertyOption;

		/**
		 * cPropertyOption_u uflag field
		 */
		uint8_t cPropertyOption_u; //optional flag

		/**
		 * 排除属性，与PropertyInclude为且关系 
		 *
		 * 版本 >= 0
		 */
		std::bitset<32>  bitsetPropertyExclude;

		/**
		 * cPropertyExclude_u uflag field
		 */
		uint8_t cPropertyExclude_u; //optional flag

		/**
		 * 扩展
		 *
		 * 版本 >= 0
		 */
		std::map<std::string,std::string>  mapExtern;

		/**
		 * cExtern_u uflag field
		 */
		uint8_t cExtern_u; //optional flag




	public:
		CBankAccountFilterPo():
		dwVersion(0),
		cVersion_u(0),
		dwPage(0),
		cPage_u(0),
		dwPageSize(0),
		cPageSize_u(0),
		wOrderType(0),
		cOrderType_u(0),
		cSysNoList_u(0),
		ddwParentBankAccountSysNo(0),
		cParentBankAccountSysNo_u(0),
		cBankAccount_u(0),
		cBankAccountName_u(0),
		cBranchBank_u(0),
		cBankType_u(0),
		cPropertyInclude_u(0),
		wPropertyOption(0),
		cPropertyOption_u(0),
		cPropertyExclude_u(0),
		cExtern_u(0) {}
				CBankAccountFilterPo& operator = (const CBankAccountFilterPo& obj){

			this->dwVersion = obj.dwVersion;
			this->dwPage = obj.dwPage;
			this->dwPageSize = obj.dwPageSize;
			this->wOrderType = obj.wOrderType;
			this->setSysNoList = obj.setSysNoList;
			this->ddwParentBankAccountSysNo = obj.ddwParentBankAccountSysNo;
			this->strBankAccount = obj.strBankAccount;
			this->strBankAccountName = obj.strBankAccountName;
			this->strBranchBank = obj.strBranchBank;
			this->strBankType = obj.strBankType;
			this->bitsetPropertyInclude = obj.bitsetPropertyInclude;
			this->wPropertyOption = obj.wPropertyOption;
			this->bitsetPropertyExclude = obj.bitsetPropertyExclude;
			this->mapExtern = obj.mapExtern;
			this->cVersion_u = obj.cVersion_u;
			this->cPage_u = obj.cPage_u;
			this->cPageSize_u = obj.cPageSize_u;
			this->cOrderType_u = obj.cOrderType_u;
			this->cSysNoList_u = obj.cSysNoList_u;
			this->cParentBankAccountSysNo_u = obj.cParentBankAccountSysNo_u;
			this->cBankAccount_u = obj.cBankAccount_u;
			this->cBankAccountName_u = obj.cBankAccountName_u;
			this->cBranchBank_u = obj.cBranchBank_u;
			this->cBankType_u = obj.cBankType_u;
			this->cPropertyInclude_u = obj.cPropertyInclude_u;
			this->cPropertyOption_u = obj.cPropertyOption_u;
			this->cPropertyExclude_u = obj.cPropertyExclude_u;
			this->cExtern_u = obj.cExtern_u;
			return *this;
		}

	public:


		/**
		 * 是否设置 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 bool  IsVersionSet() const{
				 return  cVersion_u != 0;
		}


		/**
		 * 获取uflag 版本号   了
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 const uint8_t   GetVersionUFlag() const{
				 return  cVersion_u;
		}


		/**
		 * 设置 版本号   
		 * 
		 * @param uint32_t:dwVersion
		 *  
		 * 
		 */
		 void  SetVersion( const uint32_t& sVal, uint8_t cUFlag=1){
				dwVersion = sVal;
				cVersion_u = cUFlag;
		}


		/**
		 * 获取 版本号   
		 * 
		 * @return dwVersion value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetVersion() const {
				return dwVersion;
		}


		/**
		 * 是否设置 页码，从0开始 了
		 * 
		 * @param uint32_t:dwPage
		 *  
		 * 
		 */
		 bool  IsPageSet() const{
				 return  cPage_u != 0;
		}


		/**
		 * 获取uflag 页码，从0开始 了
		 * 
		 * @param uint32_t:dwPage
		 *  
		 * 
		 */
		 const uint8_t   GetPageUFlag() const{
				 return  cPage_u;
		}


		/**
		 * 设置 页码，从0开始 
		 * 
		 * @param uint32_t:dwPage
		 *  
		 * 
		 */
		 void  SetPage( const uint32_t& sVal, uint8_t cUFlag=1){
				dwPage = sVal;
				cPage_u = cUFlag;
		}


		/**
		 * 获取 页码，从0开始 
		 * 
		 * @return dwPage value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetPage() const {
				return dwPage;
		}


		/**
		 * 是否设置 页面大小 了
		 * 
		 * @param uint32_t:dwPageSize
		 *  
		 * 
		 */
		 bool  IsPageSizeSet() const{
				 return  cPageSize_u != 0;
		}


		/**
		 * 获取uflag 页面大小 了
		 * 
		 * @param uint32_t:dwPageSize
		 *  
		 * 
		 */
		 const uint8_t   GetPageSizeUFlag() const{
				 return  cPageSize_u;
		}


		/**
		 * 设置 页面大小 
		 * 
		 * @param uint32_t:dwPageSize
		 *  
		 * 
		 */
		 void  SetPageSize( const uint32_t& sVal, uint8_t cUFlag=1){
				dwPageSize = sVal;
				cPageSize_u = cUFlag;
		}


		/**
		 * 获取 页面大小 
		 * 
		 * @return dwPageSize value 类型为:uint32_t
		 * 
		 */
		 const uint32_t&  GetPageSize() const {
				return dwPageSize;
		}


		/**
		 * 是否设置 排序方式 了
		 * 
		 * @param uint16_t:wOrderType
		 *  
		 * 
		 */
		 bool  IsOrderTypeSet() const{
				 return  cOrderType_u != 0;
		}


		/**
		 * 获取uflag 排序方式 了
		 * 
		 * @param uint16_t:wOrderType
		 *  
		 * 
		 */
		 const uint8_t   GetOrderTypeUFlag() const{
				 return  cOrderType_u;
		}


		/**
		 * 设置 排序方式 
		 * 
		 * @param uint16_t:wOrderType
		 *  
		 * 
		 */
		 void  SetOrderType( const uint16_t& sVal, uint8_t cUFlag=1){
				wOrderType = sVal;
				cOrderType_u = cUFlag;
		}


		/**
		 * 获取 排序方式 
		 * 
		 * @return wOrderType value 类型为:uint16_t
		 * 
		 */
		 const uint16_t&  GetOrderType() const {
				return wOrderType;
		}


		/**
		 * 是否设置sysNo列表了
		 * 
		 * @param std::set<uint64_t> :setSysNoList
		 *  
		 * 
		 */
		 bool  IsSysNoListSet() const{
				 return  cSysNoList_u != 0;
		}


		/**
		 * 获取uflagsysNo列表了
		 * 
		 * @param std::set<uint64_t> :setSysNoList
		 *  
		 * 
		 */
		 const uint8_t   GetSysNoListUFlag() const{
				 return  cSysNoList_u;
		}


		/**
		 * 设置sysNo列表
		 * 
		 * @param std::set<uint64_t> :setSysNoList
		 *  
		 * 
		 */
		 void  SetSysNoList( const std::set<uint64_t> & sVal, uint8_t cUFlag=1){
				setSysNoList = sVal;
				cSysNoList_u = cUFlag;
		}


		/**
		 * 获取sysNo列表
		 * 
		 * @return setSysNoList value 类型为:std::set<uint64_t> 
		 * 
		 */
		 const std::set<uint64_t> &  GetSysNoList() const {
				return setSysNoList;
		}


		/**
		 * 获取sysNo列表
		 * 
		 * @return setSysNoList value 类型为:std::set<uint64_t> 
		 * 
		 */
		 std::set<uint64_t> &  GetSysNoList() {
				return setSysNoList;
		}


		/**
		 * 是否设置 上级银行SysNo 了
		 * 
		 * @param uint64_t:ddwParentBankAccountSysNo
		 *  
		 * 
		 */
		 bool  IsParentBankAccountSysNoSet() const{
				 return  cParentBankAccountSysNo_u != 0;
		}


		/**
		 * 获取uflag 上级银行SysNo 了
		 * 
		 * @param uint64_t:ddwParentBankAccountSysNo
		 *  
		 * 
		 */
		 const uint8_t   GetParentBankAccountSysNoUFlag() const{
				 return  cParentBankAccountSysNo_u;
		}


		/**
		 * 设置 上级银行SysNo 
		 * 
		 * @param uint64_t:ddwParentBankAccountSysNo
		 *  
		 * 
		 */
		 void  SetParentBankAccountSysNo( const uint64_t& sVal, uint8_t cUFlag=1){
				ddwParentBankAccountSysNo = sVal;
				cParentBankAccountSysNo_u = cUFlag;
		}


		/**
		 * 获取 上级银行SysNo 
		 * 
		 * @return ddwParentBankAccountSysNo value 类型为:uint64_t
		 * 
		 */
		 const uint64_t&  GetParentBankAccountSysNo() const {
				return ddwParentBankAccountSysNo;
		}


		/**
		 * 是否设置 银行账号 了
		 * 
		 * @param std::string:strBankAccount
		 *  
		 * 
		 */
		 bool  IsBankAccountSet() const{
				 return  cBankAccount_u != 0;
		}


		/**
		 * 获取uflag 银行账号 了
		 * 
		 * @param std::string:strBankAccount
		 *  
		 * 
		 */
		 const uint8_t   GetBankAccountUFlag() const{
				 return  cBankAccount_u;
		}


		/**
		 * 设置 银行账号 
		 * 
		 * @param std::string:strBankAccount
		 *  
		 * 
		 */
		 void  SetBankAccount( const std::string& sVal, uint8_t cUFlag=1){
				strBankAccount = sVal;
				cBankAccount_u = cUFlag;
		}


		/**
		 * 获取 银行账号 
		 * 
		 * @return strBankAccount value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBankAccount() const {
				return strBankAccount;
		}


		/**
		 * 获取 银行账号 
		 * 
		 * @return strBankAccount value 类型为:std::string
		 * 
		 */
		 std::string&  GetBankAccount() {
				return strBankAccount;
		}


		/**
		 * 是否设置 账户名称 了
		 * 
		 * @param std::string:strBankAccountName
		 *  
		 * 
		 */
		 bool  IsBankAccountNameSet() const{
				 return  cBankAccountName_u != 0;
		}


		/**
		 * 获取uflag 账户名称 了
		 * 
		 * @param std::string:strBankAccountName
		 *  
		 * 
		 */
		 const uint8_t   GetBankAccountNameUFlag() const{
				 return  cBankAccountName_u;
		}


		/**
		 * 设置 账户名称 
		 * 
		 * @param std::string:strBankAccountName
		 *  
		 * 
		 */
		 void  SetBankAccountName( const std::string& sVal, uint8_t cUFlag=1){
				strBankAccountName = sVal;
				cBankAccountName_u = cUFlag;
		}


		/**
		 * 获取 账户名称 
		 * 
		 * @return strBankAccountName value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBankAccountName() const {
				return strBankAccountName;
		}


		/**
		 * 获取 账户名称 
		 * 
		 * @return strBankAccountName value 类型为:std::string
		 * 
		 */
		 std::string&  GetBankAccountName() {
				return strBankAccountName;
		}


		/**
		 * 是否设置 开户行 了
		 * 
		 * @param std::string:strBranchBank
		 *  
		 * 
		 */
		 bool  IsBranchBankSet() const{
				 return  cBranchBank_u != 0;
		}


		/**
		 * 获取uflag 开户行 了
		 * 
		 * @param std::string:strBranchBank
		 *  
		 * 
		 */
		 const uint8_t   GetBranchBankUFlag() const{
				 return  cBranchBank_u;
		}


		/**
		 * 设置 开户行 
		 * 
		 * @param std::string:strBranchBank
		 *  
		 * 
		 */
		 void  SetBranchBank( const std::string& sVal, uint8_t cUFlag=1){
				strBranchBank = sVal;
				cBranchBank_u = cUFlag;
		}


		/**
		 * 获取 开户行 
		 * 
		 * @return strBranchBank value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBranchBank() const {
				return strBranchBank;
		}


		/**
		 * 获取 开户行 
		 * 
		 * @return strBranchBank value 类型为:std::string
		 * 
		 */
		 std::string&  GetBranchBank() {
				return strBranchBank;
		}


		/**
		 * 是否设置 银行类型 了
		 * 
		 * @param std::string:strBankType
		 *  
		 * 
		 */
		 bool  IsBankTypeSet() const{
				 return  cBankType_u != 0;
		}


		/**
		 * 获取uflag 银行类型 了
		 * 
		 * @param std::string:strBankType
		 *  
		 * 
		 */
		 const uint8_t   GetBankTypeUFlag() const{
				 return  cBankType_u;
		}


		/**
		 * 设置 银行类型 
		 * 
		 * @param std::string:strBankType
		 *  
		 * 
		 */
		 void  SetBankType( const std::string& sVal, uint8_t cUFlag=1){
				strBankType = sVal;
				cBankType_u = cUFlag;
		}


		/**
		 * 获取 银行类型 
		 * 
		 * @return strBankType value 类型为:std::string
		 * 
		 */
		 const std::string&  GetBankType() const {
				return strBankType;
		}


		/**
		 * 获取 银行类型 
		 * 
		 * @return strBankType value 类型为:std::string
		 * 
		 */
		 std::string&  GetBankType() {
				return strBankType;
		}


		/**
		 * 是否设置包含属性，且或关系由PropertyOption指定了
		 * 
		 * @param std::bitset<32> :bitsetPropertyInclude
		 *  
		 * 
		 */
		 bool  IsPropertyIncludeSet() const{
				 return  cPropertyInclude_u != 0;
		}


		/**
		 * 获取uflag包含属性，且或关系由PropertyOption指定了
		 * 
		 * @param std::bitset<32> :bitsetPropertyInclude
		 *  
		 * 
		 */
		 const uint8_t   GetPropertyIncludeUFlag() const{
				 return  cPropertyInclude_u;
		}


		/**
		 * 设置包含属性，且或关系由PropertyOption指定
		 * 
		 * @param std::bitset<32> :bitsetPropertyInclude
		 *  
		 * 
		 */
		 void  SetPropertyInclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetPropertyInclude = sVal;
				cPropertyInclude_u = cUFlag;
		}


		/**
		 * 获取包含属性，且或关系由PropertyOption指定
		 * 
		 * @return bitsetPropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetPropertyInclude() const {
				return bitsetPropertyInclude;
		}


		/**
		 * 获取包含属性，且或关系由PropertyOption指定
		 * 
		 * @return bitsetPropertyInclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetPropertyInclude() {
				return bitsetPropertyInclude;
		}


		/**
		 * 是否设置包含属性选项：0：且的关系；1，或的关系了
		 * 
		 * @param uint16_t:wPropertyOption
		 *  
		 * 
		 */
		 bool  IsPropertyOptionSet() const{
				 return  cPropertyOption_u != 0;
		}


		/**
		 * 获取uflag包含属性选项：0：且的关系；1，或的关系了
		 * 
		 * @param uint16_t:wPropertyOption
		 *  
		 * 
		 */
		 const uint8_t   GetPropertyOptionUFlag() const{
				 return  cPropertyOption_u;
		}


		/**
		 * 设置包含属性选项：0：且的关系；1，或的关系
		 * 
		 * @param uint16_t:wPropertyOption
		 *  
		 * 
		 */
		 void  SetPropertyOption( const uint16_t& sVal, uint8_t cUFlag=1){
				wPropertyOption = sVal;
				cPropertyOption_u = cUFlag;
		}


		/**
		 * 获取包含属性选项：0：且的关系；1，或的关系
		 * 
		 * @return wPropertyOption value 类型为:uint16_t
		 * 
		 */
		 const uint16_t&  GetPropertyOption() const {
				return wPropertyOption;
		}


		/**
		 * 是否设置排除属性，与PropertyInclude为且关系 了
		 * 
		 * @param std::bitset<32> :bitsetPropertyExclude
		 *  
		 * 
		 */
		 bool  IsPropertyExcludeSet() const{
				 return  cPropertyExclude_u != 0;
		}


		/**
		 * 获取uflag排除属性，与PropertyInclude为且关系 了
		 * 
		 * @param std::bitset<32> :bitsetPropertyExclude
		 *  
		 * 
		 */
		 const uint8_t   GetPropertyExcludeUFlag() const{
				 return  cPropertyExclude_u;
		}


		/**
		 * 设置排除属性，与PropertyInclude为且关系 
		 * 
		 * @param std::bitset<32> :bitsetPropertyExclude
		 *  
		 * 
		 */
		 void  SetPropertyExclude( const std::bitset<32> & sVal, uint8_t cUFlag=1){
				bitsetPropertyExclude = sVal;
				cPropertyExclude_u = cUFlag;
		}


		/**
		 * 获取排除属性，与PropertyInclude为且关系 
		 * 
		 * @return bitsetPropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 const std::bitset<32> &  GetPropertyExclude() const {
				return bitsetPropertyExclude;
		}


		/**
		 * 获取排除属性，与PropertyInclude为且关系 
		 * 
		 * @return bitsetPropertyExclude value 类型为:std::bitset<32> 
		 * 
		 */
		 std::bitset<32> &  GetPropertyExclude() {
				return bitsetPropertyExclude;
		}


		/**
		 * 是否设置扩展了
		 * 
		 * @param std::map<std::string,std::string> :mapExtern
		 *  
		 * 
		 */
		 bool  IsExternSet() const{
				 return  cExtern_u != 0;
		}


		/**
		 * 获取uflag扩展了
		 * 
		 * @param std::map<std::string,std::string> :mapExtern
		 *  
		 * 
		 */
		 const uint8_t   GetExternUFlag() const{
				 return  cExtern_u;
		}


		/**
		 * 设置扩展
		 * 
		 * @param std::map<std::string,std::string> :mapExtern
		 *  
		 * 
		 */
		 void  SetExtern( const std::map<std::string,std::string> & sVal, uint8_t cUFlag=1){
				mapExtern = sVal;
				cExtern_u = cUFlag;
		}


		/**
		 * 获取扩展
		 * 
		 * @return mapExtern value 类型为:std::map<std::string,std::string> 
		 * 
		 */
		 const std::map<std::string,std::string> &  GetExtern() const {
				return mapExtern;
		}


		/**
		 * 获取扩展
		 * 
		 * @return mapExtern value 类型为:std::map<std::string,std::string> 
		 * 
		 */
		 std::map<std::string,std::string> &  GetExtern() {
				return mapExtern;
		}

		virtual bool Serialize(CByteStreamNetwork& bs){
		
			uint32_t dwMyLen = 0;
			if(bs.isStoring()) //for write in buffer
			{
				//can not larger than 1 M.
				CByteStreamNetwork bsDummy(NULL, 1024 * 1024, false);
				//bsDummy for precheck the xo size...
				bsDummy.isStoring(true);
				Serialize_i(bsDummy);
				dwMyLen = bsDummy.getWrittenLength();
				bs & dwMyLen;
				Serialize_i(bs);
			}
			else
			{    //for read from buffer
				bs & dwMyLen;
				uint32_t dwReadedLen = bs.getReadLength();
				Serialize_i(bs);
				dwReadedLen = bs.getReadLength() - dwReadedLen;
				// dwReadedLen for the size of xo
				if( dwReadedLen > dwMyLen ){
					return false;
				}
				//go through the unwanted mem position...
				bs.goForward( dwMyLen - dwReadedLen );
			}

			return bs.isGood();
		}

		bool Serialize_i(CByteStreamNetwork& bsTmp){

			bsTmp & dwVersion; // 序列化 版本号    类型为uint32_t
			bsTmp & cVersion_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwPage; // 序列化 页码，从0开始  类型为uint32_t
			bsTmp & cPage_u; // 序列化uflag 类型为uint8_t
			bsTmp & dwPageSize; // 序列化 页面大小  类型为uint32_t
			bsTmp & cPageSize_u; // 序列化uflag 类型为uint8_t
			bsTmp & wOrderType; // 序列化 排序方式  类型为uint16_t
			bsTmp & cOrderType_u; // 序列化uflag 类型为uint8_t
			bsTmp & setSysNoList; // 序列化sysNo列表 类型为Set
			bsTmp & cSysNoList_u; // 序列化uflag 类型为uint8_t
			bsTmp & ddwParentBankAccountSysNo; // 序列化 上级银行SysNo  类型为uint64_t
			bsTmp & cParentBankAccountSysNo_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBankAccount; // 序列化 银行账号  类型为String
			bsTmp & cBankAccount_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBankAccountName; // 序列化 账户名称  类型为String
			bsTmp & cBankAccountName_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBranchBank; // 序列化 开户行  类型为String
			bsTmp & cBranchBank_u; // 序列化uflag 类型为uint8_t
			bsTmp & strBankType; // 序列化 银行类型  类型为String
			bsTmp & cBankType_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetPropertyInclude; // 序列化包含属性，且或关系由PropertyOption指定 类型为BitSet
			bsTmp & cPropertyInclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & wPropertyOption; // 序列化包含属性选项：0：且的关系；1，或的关系 类型为uint16_t
			bsTmp & cPropertyOption_u; // 序列化uflag 类型为uint8_t
			bsTmp & bitsetPropertyExclude; // 序列化排除属性，与PropertyInclude为且关系  类型为BitSet
			bsTmp & cPropertyExclude_u; // 序列化uflag 类型为uint8_t
			bsTmp & mapExtern; // 序列化扩展 类型为Map
			bsTmp & cExtern_u; // 序列化uflag 类型为uint8_t
			return bsTmp.isGood();
		}

		const char* GetLastErrMsg() const{
			return m_sLastErrMsg.c_str();
		}

		bool VerifyBankAccountFilterPo(){

			if(!IsVersionSet()){
				m_sLastErrMsg = "Miss Param:version";
				return false;
			}

			if(!IsPageSet()){
				m_sLastErrMsg = "Miss Param:page";
				return false;
			}

			if(!IsPageSizeSet()){
				m_sLastErrMsg = "Miss Param:pageSize";
				return false;
			}

			if(!IsOrderTypeSet()){
				m_sLastErrMsg = "Miss Param:orderType";
				return false;
			}

			if(!IsSysNoListSet()){
				m_sLastErrMsg = "Miss Param:sysNoList";
				return false;
			}

			if(!IsParentBankAccountSysNoSet()){
				m_sLastErrMsg = "Miss Param:ParentBankAccountSysNo";
				return false;
			}

			if(!IsBankAccountSet()){
				m_sLastErrMsg = "Miss Param:BankAccount";
				return false;
			}

			if(!IsBankAccountNameSet()){
				m_sLastErrMsg = "Miss Param:BankAccountName";
				return false;
			}

			if(!IsBranchBankSet()){
				m_sLastErrMsg = "Miss Param:BranchBank";
				return false;
			}

			if(!IsBankTypeSet()){
				m_sLastErrMsg = "Miss Param:BankType";
				return false;
			}

			if(!IsPropertyIncludeSet()){
				m_sLastErrMsg = "Miss Param:propertyInclude";
				return false;
			}

			if(!IsPropertyOptionSet()){
				m_sLastErrMsg = "Miss Param:propertyOption";
				return false;
			}

			if(!IsPropertyExcludeSet()){
				m_sLastErrMsg = "Miss Param:propertyExclude";
				return false;
			}

			if(!IsExternSet()){
				m_sLastErrMsg = "Miss Param:extern";
				return false;
			}
			return true;
		}

		void DumpData(std::ostream& oss) const{
		
			oss<<"[dwVersion:"<<dwVersion<<"] ";
			oss<<"[cVersion_u:"<<(int)cVersion_u<<"] ";
			oss<<"[dwPage:"<<dwPage<<"] ";
			oss<<"[cPage_u:"<<(int)cPage_u<<"] ";
			oss<<"[dwPageSize:"<<dwPageSize<<"] ";
			oss<<"[cPageSize_u:"<<(int)cPageSize_u<<"] ";
			oss<<"[wOrderType:"<<(int)wOrderType<<"] ";
			oss<<"[cOrderType_u:"<<(int)cOrderType_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cSysNoList_u:"<<(int)cSysNoList_u<<"] ";
			oss<<"[ddwParentBankAccountSysNo:"<<ddwParentBankAccountSysNo<<"] ";
			oss<<"[cParentBankAccountSysNo_u:"<<(int)cParentBankAccountSysNo_u<<"] ";
			oss<<"[strBankAccount:"<<strBankAccount<<"] ";
			oss<<"[cBankAccount_u:"<<(int)cBankAccount_u<<"] ";
			oss<<"[strBankAccountName:"<<strBankAccountName<<"] ";
			oss<<"[cBankAccountName_u:"<<(int)cBankAccountName_u<<"] ";
			oss<<"[strBranchBank:"<<strBranchBank<<"] ";
			oss<<"[cBranchBank_u:"<<(int)cBranchBank_u<<"] ";
			oss<<"[strBankType:"<<strBankType<<"] ";
			oss<<"[cBankType_u:"<<(int)cBankType_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cPropertyInclude_u:"<<(int)cPropertyInclude_u<<"] ";
			oss<<"[wPropertyOption:"<<(int)wPropertyOption<<"] ";
			oss<<"[cPropertyOption_u:"<<(int)cPropertyOption_u<<"] ";
		//嵌套内容有错误，建议使用dumpDataTree方法，复杂数据格式更直观！
			oss<<"[cPropertyExclude_u:"<<(int)cPropertyExclude_u<<"] ";

			std::map<std::string,std::string>::const_iterator itmapExtern=mapExtern.begin();
			std::map<std::string,std::string>::const_iterator itmapExternEnd=mapExtern.end();
			for(;itmapExtern!=itmapExternEnd;itmapExtern++)
				oss<<"[mapExtern:"<<itmapExtern->second<<"] ";
			oss<<"[cExtern_u:"<<(int)cExtern_u<<"] ";
		
		}

		// codydeng提供,非常好的dump方法 ^-^  。。。。。
		template<typename T>
		T & DumpPlusData(T& oss){
			oss<<"dwVersion:"<<dwVersion;
			oss<<"[cVersion_u:"<<cVersion_u<<"] ";
			oss<<"dwPage:"<<dwPage;
			oss<<"[cPage_u:"<<cPage_u<<"] ";
			oss<<"dwPageSize:"<<dwPageSize;
			oss<<"[cPageSize_u:"<<cPageSize_u<<"] ";
			oss<<"wOrderType:"<<wOrderType;
			oss<<"[cOrderType_u:"<<cOrderType_u<<"] ";
			oss<<"setSysNoList:"<<setSysNoList;
			oss<<"[cSysNoList_u:"<<cSysNoList_u<<"] ";
			oss<<"ddwParentBankAccountSysNo:"<<ddwParentBankAccountSysNo;
			oss<<"[cParentBankAccountSysNo_u:"<<cParentBankAccountSysNo_u<<"] ";
			oss<<"strBankAccount:"<<strBankAccount;
			oss<<"[cBankAccount_u:"<<cBankAccount_u<<"] ";
			oss<<"strBankAccountName:"<<strBankAccountName;
			oss<<"[cBankAccountName_u:"<<cBankAccountName_u<<"] ";
			oss<<"strBranchBank:"<<strBranchBank;
			oss<<"[cBranchBank_u:"<<cBranchBank_u<<"] ";
			oss<<"strBankType:"<<strBankType;
			oss<<"[cBankType_u:"<<cBankType_u<<"] ";
			oss<<"bitsetPropertyInclude:"<<bitsetPropertyInclude;
			oss<<"[cPropertyInclude_u:"<<cPropertyInclude_u<<"] ";
			oss<<"wPropertyOption:"<<wPropertyOption;
			oss<<"[cPropertyOption_u:"<<cPropertyOption_u<<"] ";
			oss<<"bitsetPropertyExclude:"<<bitsetPropertyExclude;
			oss<<"[cPropertyExclude_u:"<<cPropertyExclude_u<<"] ";
			oss<<"mapExtern:"<<mapExtern;
			oss<<"[cExtern_u:"<<cExtern_u<<"] ";
			return oss;
		}

		// wileywang提供,树形dump方法 ^-^  。。。。。
		void DumpDataTree(std::ostream& os, int ident = 0)const {
			g_pprint(os, "dwVersion", dwVersion, ident);
			g_pprint(os, "cVersion_u", cVersion_u, ident);
			g_pprint(os, "dwPage", dwPage, ident);
			g_pprint(os, "cPage_u", cPage_u, ident);
			g_pprint(os, "dwPageSize", dwPageSize, ident);
			g_pprint(os, "cPageSize_u", cPageSize_u, ident);
			g_pprint(os, "wOrderType", wOrderType, ident);
			g_pprint(os, "cOrderType_u", cOrderType_u, ident);
			g_pprint(os, "setSysNoList", setSysNoList, ident);
			g_pprint(os, "cSysNoList_u", cSysNoList_u, ident);
			g_pprint(os, "ddwParentBankAccountSysNo", ddwParentBankAccountSysNo, ident);
			g_pprint(os, "cParentBankAccountSysNo_u", cParentBankAccountSysNo_u, ident);
			g_pprint(os, "strBankAccount", strBankAccount, ident);
			g_pprint(os, "cBankAccount_u", cBankAccount_u, ident);
			g_pprint(os, "strBankAccountName", strBankAccountName, ident);
			g_pprint(os, "cBankAccountName_u", cBankAccountName_u, ident);
			g_pprint(os, "strBranchBank", strBranchBank, ident);
			g_pprint(os, "cBranchBank_u", cBranchBank_u, ident);
			g_pprint(os, "strBankType", strBankType, ident);
			g_pprint(os, "cBankType_u", cBankType_u, ident);
			g_pprint(os, "bitsetPropertyInclude", bitsetPropertyInclude, ident);
			g_pprint(os, "cPropertyInclude_u", cPropertyInclude_u, ident);
			g_pprint(os, "wPropertyOption", wPropertyOption, ident);
			g_pprint(os, "cPropertyOption_u", cPropertyOption_u, ident);
			g_pprint(os, "bitsetPropertyExclude", bitsetPropertyExclude, ident);
			g_pprint(os, "cPropertyExclude_u", cPropertyExclude_u, ident);
			g_pprint(os, "mapExtern", mapExtern, ident);
			g_pprint(os, "cExtern_u", cExtern_u, ident);
		}
		
		//提供ToString借口，默认为DumpData格式，请按需要进行修改
		std::string ToString() const{
			std::stringstream ss;
			DumpData(ss);
			return ss.str();
		}

/**
 ********************以下信息是每个版本的字段********************
 */

};

}
}
}

#endif /* ERP_ACACCOUNT_PO_CBANKACCOUNTFILTERPO_BY_AUTOGEN_V5_H */
